﻿//goog.provide('imc.cmd');
goog.provide('imc.cmd.Rol');

imc.cmd.Rol = function () {
    this.save = function (idRol, rolDesc, rolPrio) {
        
    }
};

//Tabla rol ----------------------------------------------------------------------------------------------------------------
imc.cmd.Rol.dataTableRol = function () {
    imc.cmd.Loader.show();
    $('#contenedorDerecha').load("configuracion.html #RolDerecha", function () {
        $.ajax({
            url: "Services/Auth.svc/GetDataListRol",
            type: "POST",
            dataType: "json",
            data: '{}',
            contentType: "application/json; charset=utf-8",
            success: function (data) {
                oTable = $('#tblDatosRoles').dataTable({
                    'bInfo': false,
                    'bPaginate': false,
                    'bLengthChange': false,
                    'bRetrieve': true, 'sDom': '',
                    'sInfoEmpty': '',
                    aaData: data.GetDataListRolResult,
                    aoColumns: [
                        { "aTargets": [0],
                        "fnRender": function (oObj) {
//                                for (var i in oObj.aData) {
//                                    console.log(i);
//                                }
                                return '<input type="checkbox" id="readonly" imc-data="'+oObj.aData["idRol"]+'" value="' + oObj.aData[0] + '" name="check" />';
                        },
                        "sClass": "checkboxId",
                        "bSearchable": false,
                        "bSortable": false,
                        "mDataProp": "check",
                        "sWidth": "4%" 
                        },
                        { "sTitle": "Id", "mDataProp": "idRol", "sClass": "editar" },
		                { "sTitle": "Descripción", "mDataProp": "rol", "sClass": "editar" },
		                { "sTitle": "Prioridad", "mDataProp": "prio", "sClass": "editar" }
                    ]
                });
                imc.cmd.Rol.modificarRol();

            },
            error: function () {
                alert('Error al cargar la tabla')
            }
        });
    });
}

//Borrar Rol ---------------------------------------------------------------------------------------------------------------
var dialogBorrarRol = new goog.ui.Dialog();
dialogBorrarRol.setContent(
    '<label style="font-family: Verdana, Arial, Helvetica, sans-serif;">¿Estás seguro de que deseas eliminar los roles seleccionados?</label><br />' 
);
dialogBorrarRol.setTitle('Borrar rol');

dialogBorrarRol.setHasTitleCloseButton(false);

var btnBorrarRol = new goog.ui.Dialog.ButtonSet();
btnBorrarRol.addButton({ caption: "Borrar", key: "e" }).addButton({ caption: "Cancelar", key: "o" });
dialogBorrarRol.setButtonSet(btnBorrarRol);
goog.events.listen(dialogBorrarRol, goog.ui.Dialog.EventType.SELECT, function (e) {
    //alert(e.key);
    if (e.key == "o") {
        return true;
    } else {
        var borrar = "";
        $('input[type="checkbox"]:checked', oTable.fnGetNodes()).each(function (i) {
            //        borrar += oTable.fnGetData(i).idRol + "','";
            //        console.log(oTable.fnGetData(i));
            //        console.log(this.value);
            borrar += $(this).attr("imc-data") + ",";
        });
        if (borrar != "") {
            borrar = borrar.substring(0, borrar.length - 1);
        }
        console.log(borrar);
        if (borrar != "") {
            imc.cmd.Loader.show();
            $.ajax({
                url: "Services/Auth.svc/DeleteRol",
                type: "POST",
                dataType: "json",
                data: '{"aIdRol": "' + borrar + '" }',
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    if (data) {
                        $.ajax({
                            url: "Services/Auth.svc/GetDataListRol",
                            type: "POST",
                            dataType: "json",
                            data: '{}',
                            contentType: "application/json; charset=utf-8",
                            success: function (data) {
                                var ot = $("#tblDatosRoles").dataTable();
                                ot.fnClearTable();
                                ot.fnAddData(data.GetDataListRolResult);
                            },
                            error: function () {
                                alert('Error al recargar la tabla ' + result.status + ' ' + result.statusText);
                            }
                        });
                        return false;
                    }
                },
                error: function (data) {
                    alert('Error al borrar Rol ' + result.status + ' ' + result.statusText);
                }
            });
        }
        else {
            alert('No hay ningún rol seleccionado');
            return true;
        }
    }
});

//Dialog -------------------------------------------------------------------------------------------------------------------
function showDialogBorrarRol(dialog, sDataRol) {
    dialog.setVisible(true);
}

function showDialogAgregarRol(dialog, sDataRol) {
    var IdPassRol = dialog.getContentElement("Id_passRol");
    $("#Id_passRol").text(sDataRol);
    dialog.setVisible(true);
}

function showDialogModificarRol(dialog, sDataRol) {
    imc.cmd.Loader.show();
    var IdPassGrupo = dialog.getContentElement("Id_passRol");
    $("#Id_passRol").text(sDataRol);
    dialog.setVisible(true);
    //Recuperar text al modificar
    $.ajax({
        url: "Services/Auth.svc/GetDataRol",
        type: "POST",
        dataType: "json",
        data: '{"aIdRol":"' + sDataRol + '"}',
        contentType: "application/json; charset=utf-8",
        success: function (data) {
            if (data.GetDataRolResult != null) {
                document.getElementById('txtModDescripRol').value = data.GetDataRolResult["rol"];
                document.getElementById('txtModPriorRol').value = data.GetDataRolResult["prio"];
            }
            else {
                alert('Error al cargar los datos de Rol');
            }
        },
        error: function () {
            alert('Error al recargar la tabla ' + result.status + ' ' + result.statusText);
        }
    });
}

//Dialog agregar rol -------------------------------------------------------------------------------------------------------

var dialogAgregarRol = new goog.ui.Dialog();
dialogAgregarRol.setContent(
    '<p id="validarAgregar" style="font-family: Verdana, Arial, Helvetica, sans-serif;"></p>' +
    '<p style="font-family: Verdana, Arial, Helvetica, sans-serif; margin-bottom:1px;">Descripción: </p><input type="text" id="txtDescripRol" style="font-family: Verdana, Arial, Helvetica, sans-serif; width: 250px;" /><br />' +
    '<p style="font-family: Verdana, Arial, Helvetica, sans-serif; margin-bottom:1px;">Prioridad: </p><input type="text" id="txtPriorRol" style="font-family: Verdana, Arial, Helvetica, sans-serif; width: 250px;" /><br />'
);
dialogAgregarRol.setTitle('Agregar rol');
dialogAgregarRol.setHasTitleCloseButton(false);
var btnAgregarRol = new goog.ui.Dialog.ButtonSet();
btnAgregarRol.addButton({ caption: "Agregar", key: "e" }).addButton({ caption: "Cancelar", key: "o" });
dialogAgregarRol.setButtonSet(btnAgregarRol);
goog.events.listen(dialogAgregarRol, goog.ui.Dialog.EventType.SELECT, function (e) {
    //alert(e.key);
    if (e.key == "o") {
        $('#validarAgregar').html('');
        $("#txtDescripRol").val('');
        $("#txtPriorRol").val('');
        $("#txtDescripRol").css({ background: "white" });
        $("#txtPriorRol").css({ background: "white" });
        return true;
    } else {
        //Validar agregar ------------------------------------------------
        var val1 = $("#txtDescripRol").val();
        //console.log("variable :" + val1);
        var val2 = $("#txtPriorRol").val();
        //console.log("variable :" + val2);
        if (val1 == "" && val2 == "") {
        $('#validarAgregar').html('');
        $("#txtDescripRol").css({ background: "#FFFF66" });
        $("#txtPriorRol").css({ background: "#FFFF66" });
        $('#validarAgregar').css({ color: "Red" });
        $('#validarAgregar').html('Todos los campos son requeridos');
        return false;
        }
        else if ($.trim(val1) == '') {
        $('#validarAgregar').html('');
        $("#txtDescripRol").css({ background: "#FFFF66" });
        $("#txtPriorRol").css({ background: "white" });
        $('#validarAgregar').css({ color: "Red" });
        $('#validarAgregar').html('Es necesario ingresar la descripción');
        return false;
        }
        else if ($.trim(val2) == '') {
        $('#validarAgregar').html('');
        $("#txtDescripRol").css({ background: "white" });
        $("#txtPriorRol").css({ background: "#FFFF66" });
        $('#validarAgregar').css({ color: "Red" });
        $('#validarAgregar').html('Es necesario ingresar la prioridad');
        return false;
        }
        else if (!/^([0-9])*$/.test(val2)) {
        $('#validarAgregar').html('');
        $("#txtDescripRol").css({ background: "white" });
        $("#txtPriorRol").css({ background: "#FFFF66" });
        $('#validarAgregar').css({ color: "Red" });
        $('#validarAgregar').html('La prioridad solo puede ser numérica');
        return false;
        }
        else {
            imc.cmd.Loader.show(); 
            $.ajax({
                url: "Services/Auth.svc/UpsertRol",
                type: "POST",
                dataType: "json",
                data: '{"idRol":'+ -1 +',"prio":' + val2 + ' ,"rol":"' + val1 + '" }',
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    $("#txtDescripRol").val('');
                    $("#txtPriorRol").val('');
                    $.ajax({
                        url: "Services/Auth.svc/GetDataListRol",
                        type: "POST",
                        dataType: "json",
                        data: '{}',
                        contentType: "application/json; charset=utf-8",
                        success: function (data) {
                            var ot = $("#tblDatosRoles").dataTable();
                            ot.fnClearTable();
                            ot.fnAddData(data.GetDataListRolResult);
                            dialogAgregarRol.setVisible(false);
                        },
                        error: function () {
                            alert('Error al recargar la tabla ' + result.status + ' ' + result.statusText);
                        }
                    });
                },
                error: function (data) {
                    alert('Error al agregar Rol ' + result.status + ' ' + result.statusText);
                }
            });
        } //Validar agregar
    }
});

//Dialog modificar rol -----------------------------------------------------------------------------------------------------
var dialogModificarRol = new goog.ui.Dialog();
dialogModificarRol.setContent(
    '<label id="validarModificarRol" style="font-family: Verdana, Arial, Helvetica, sans-serif;"></label><br />' +
    '<div style="font-family: Verdana, Arial, Helvetica, sans-serif; margin-bottom:1px;">ID: <label id="Id_passRol" style="font-family: Verdana, Arial, Helvetica, sans-serif;"></label></div><br />' +
    '<div style="font-family: Verdana, Arial, Helvetica, sans-serif; margin-bottom:1px;">Descripción: </div><input type="text" id="txtModDescripRol" style="font-family: Verdana, Arial, Helvetica, sans-serif; width: 250px;" /><br />' +
    '<div style="font-family: Verdana, Arial, Helvetica, sans-serif; margin-bottom:1px;">Prioridad: </div><input type="text" id="txtModPriorRol" style="font-family: Verdana, Arial, Helvetica, sans-serif; width: 250px;" /><br />'
);
dialogModificarRol.setTitle('Modificar rol');
dialogModificarRol.setHasTitleCloseButton(false);
var btnModificarRol = new goog.ui.Dialog.ButtonSet();
btnModificarRol.addButton({ caption: "Guardar cambios", key: "e" }).addButton({ caption: "Cancelar", key: "o" });
dialogModificarRol.setButtonSet(btnModificarRol);
goog.events.listen(dialogModificarRol, goog.ui.Dialog.EventType.SELECT, function (e) {
    //alert(e.key);
    if (e.key == "o") {
        $('#validarModificarRol').html('');
        $("#txtModDescripRol").val('');
        $("#txtModPriorRol").val('');
        $("#txtModDescripRol").css({ background: "white" });
        $("#txtModPriorRol").css({ background: "white" });
        return true;
    } else {
        //Validar modificar ----------------------------------------------
        var val1 = $("#txtModDescripRol").val();
        //console.log("variable :" + val1);
        var val2 = $("#txtModPriorRol").val();
        //console.log("variable :" + val2);
        var _sdataRol = $("#Id_passRol").text();
        //console.log(_sdataRol);
        if (val1 == "" && val2 == "") {
            $('#validarAgregarRol').html('');
            $("#txtModDescripRol").css({ background: "#FFFF66" });
            $("#txtModPriorRol").css({ background: "#FFFF66" });
            $('#validarModificarRol').css({ color: "Red" });
            $('#validarModificarRol').html('Todos los campos son requeridos');
            return false;
        }
        else if ($.trim(val1) == '') {
            $('#validarAgregarRol').html('');
            $("#txtModDescripRol").css({ background: "#FFFF66" });
            $("#txtModPriorRol").css({ background: "white" });
            $('#validarModificarRol').css({ color: "Red" });
            $('#validarModificarRol').html('Es necesario ingresar la descripción');
            return false;
        }
        else if ($.trim(val2) == '') {
            $('#validarAgregarRol').html('');
            $("#txtModDescripRol").css({ background: "white" });
            $("#txtModPriorRol").css({ background: "#FFFF66" });
            $('#validarModificarRol').css({ color: "Red" });
            $('#validarModificarRol').html('Es necesario ingresar la prioridad');
            return false;
        }
        else if (!/^([0-9])*$/.test(val2)) {
            $('#validarAgregarRol').html('');
            $("#txtModDescripRol").css({ background: "white" });
            $("#txtModPriorRol").css({ background: "#FFFF66" });
            $('#validarModificarRol').css({ color: "Red" });
            $('#validarModificarRol').html('La prioridad solo puede ser numérica');
            return false;
        }
        else {
            imc.cmd.Loader.show();
            $.ajax({
                url: "Services/Auth.svc/UpsertRol",
                type: "POST",
                dataType: "json",
                data: '{"idRol":' + _sdataRol + ',"prio":' + val2 + ' ,"rol":"' + val1 + '" }',
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    $("#txtModDescripRol").val('');
                    $("#txtModPriorRol").val('');
                    $.ajax({
                        url: "Services/Auth.svc/GetDataListRol",
                        type: "POST",
                        dataType: "json",
                        data: '{}',
                        contentType: "application/json; charset=utf-8",
                        success: function (data) {
                            var ot = $("#tblDatosRoles").dataTable();
                            ot.fnClearTable();
                            ot.fnAddData(data.GetDataListRolResult);
                            dialogModificarRol.setVisible(false);
                        },
                        error: function () {
                            alert('Error al recargar la tabla ' + result.status + ' ' + result.statusText);
                        }
                    });
                },
                error: function (data) {
                    alert('Error al modificar Rol ' + result.status + ' ' + result.statusText);
                }
            });
        } //validar modificar
    }
});

//Modificar rol al seleccionar una fila ------------------------------------------------------------------------------------
imc.cmd.Rol.modificarRol = function () {
    $('#tblDatosRoles td:nth-child(2), .editar').live('click', function () {
        var sDataRol = oTable.fnGetData(this.parentNode, 1);
        showDialogModificarRol(dialogModificarRol, sDataRol);
    });
}
